名词解释Cluster Snapshot:在存算分离架构下,StarRocks 3.5 新增支持集群级别的 Snapshot 功能,提供完整的集群快照能力。 Cluster Snapshot 包含两部分内容:Metadata Snapshot 和 Data Snapshot。 configMaps: - name: cluster-snapshot mountPath: /opt/starrocks/fe/conf/cluster_snapshot.yaml subPath: cluster_snapshot.yaml configMaps: - name: cluster-snapshot data: cluster_snapshot.yaml : | # information about the cluster snapshot to be downloaded and restored cluster_snapshot
192.168.212.190:9200/_snapshot/my_backup/snapshot_1' 同步执行,加wait_for_completion 标志,备份完成后才返回,如果数据量大的话,会花很长时间 $ curl -XPUT 'http://192.168.212.190:9200/_snapshot/my_backup/snapshot_2? -XGET 'http://192.168.212.190:9200/_snapshot/my_backup/snapshot_2' 如果要查看所有索引的信息,使用如下api: $ curl -XGET :9200/_snapshot/my_backup/snapshot_2/_status' 删除备份 $ curl -XDELETE 'http://192.168.212.190:9200/_snapshot /my_backup/snapshot_2' 三、Restore 恢复snapshot_1里的全部索引: $ curl -XPOST 'http://192.168.212.190:9200/_snapshot
现在 data-service 团队会每次发布更新代码的快照到仓库中,比如说 data-service:1.0-SNAPSHOT 来替代旧的快照 jar 包。 快照的情况下,每次 app-ui 团队构建他们的项目时,Maven 将自动获取最新的快照(data-service:1.0-SNAPSHOT)。 groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT modelVersion> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT --------------------------------------------------------------- [INFO] Downloading data-service:1.0-SNAPSHOT
Snapshot Isolation 在 Snapshot Isolation 下,不会出现脏读、不可重复度和幻读三种读异常。 并且读操作不会被阻塞,对于读多写少的应用 Snapshot Isolation 是非常好的选择。并且,在很多应用场景下,Snapshot Isolation 下的并发事务并不会导致数据异常。 虽然大部分应用场景下,Snapshot Isolation 可以很好地运行,但是 Snapshot Isolation 依然没有达到可串行化的隔离级别,因为它会出现写偏序(write skew)。 Serializable Snapshot Isolation 后来,又有人提出了基于 Snapshot Isolation 的可串行化 —— Serializable Snapshot Isolation 后来,Serializable Isolation for snapshot database 在 Berkeley DB 的 Snapshot Isolation 之上,增加对事务 rw-dependency
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.8/_snapshot_apis.html https://www.elastic.co /guide/en/elasticsearch/reference/current/snapshot-restore-apis.html 获取快照仓库 /** * 获取快照仓库 * @param request PutRepositoryRequest request) throws IOException{ AcknowledgedResponse response = restHighLevelClient.snapshot IOException{ DeleteSnapshotRequest request = new DeleteSnapshotRequest(repositoryName); request.snapshot CreateSnapshotRequest(); // 仓库名 request.repository(repositoryName); // 快照名 request.snapshot
为了解决这种情况, 快照(SNAPSHOT)的概念派上了用场。 二、什么是快照(SNAPSHOT)? 快照(SNAPSHOT)*是一种特殊的版本,指定了某个当前的开发进度的副本。 注意:每次更新jar包时,版本好不变,且后缀必须带上-SNAPSHOT。 快照(Snapshot)的情况下,每次app-ui团队构建他们的项目时,Maven将自动获取最新的快照(data-service:1.0-SNAPSHOT)。 快照(Snapshot)存放在Snapshot快照仓库。 注意:版本(Version)的概念,只要不带有-SNAPSHOT的关键字时,都会认为这是一个在Release发布仓库的jar包。 四、原理详解 Maven中的仓库分为两种,Snapshot快照仓库和Release发布仓库。Snapshot快照仓库用于保存开发过程中的不稳定版本,Release正式仓库则是用来保存稳定的发行版本。
hdfs dfsadmin -allowSnapshot 路径 2.禁用指定目录的快照功能(默认就是禁用状态) hdfs dfsadmin -disallowSnapshot 路径 3.给某个路径创建快照snapshot hdfs dfs -createSnapshot 路径 4.指定快照名称进行创建快照snapshot hdfs dfs -createSanpshot 路径 名称 5.给快照重新命名 hdfs 新名称 6.列出当前用户所有可快照目录 hdfs lsSnapshottableDir 7.比较两个快照的目录不同之处 hdfs snapshotDiff 路径1 快照名称1 快照名称2 8.删除快照snapshot snaphot on /user succeeded [root@node01 Hadoop-2.6.0-cdh5.14.0]# hdfs dfs -createSnapshot /user Created snapshot /user/.snapshot/s20190317-210906.549 通过web浏览器访问快照 http://xxxx:50070/dfshealth.html#tab-snapshot
我在之前的博文《Elasticsearch引入可搜索快照(searchable snapshot)》中介绍过Searchable snapshot这个功能,简单来说,通过这个功能,我们能够解锁对象存储简单用作快照备份的功能 因此,在7.11版本的ILM中的,我们为Hot phase添加了searchable snapshot的配置: [在这里插入图片描述] 这里需要注意几点: 仍然是只有只读索引才可以开启可搜索快照功能,即必须启动 ,cold phase中的searchable snapshot滑块将自动disable[在这里插入图片描述] 但为了让我们的演示更加简单。 我将在ILM中创建一个cold phase的searchable snapshot的索引生命周期管理策略。 " :{ "snapshot_repository": "found-snapshot" } } } } } } 创建索引模板
在这个SnapShot中,我们回顾了内源性免疫编辑(EI)和免疫治疗诱导的免疫编辑(III)的这两个阶段。出于此SnapShot的目的,由于检查点抑制,我们将主要关注免疫治疗。
但是,我们引用的是snapshot的jar,这种jar文件一般是其他项目组的代码,这种jar一般都进行迭代开发,会重复更新上传到nexus代码仓库中,我们必须在每次启动的时候能更新最新依赖的jar。
Redis Cluster使用的便是虚拟槽分区。 上面主要介绍了下集群中数据是如何分布在各节点上的,但实际上 客户端是如何读写数据 的呢? Redis Cluster 采用了直接节点的方式 。 hashtag: 是Cluster为了满足用户让特定Key绑定到特定槽位的需求而实现的一个功能。 考虑到频繁地交换信息会加重带宽(集群节点越多越明显)和计算的负担,Redis Cluster内部的定时任务每秒执行10次,每次遍历本地节点列表,对最近一次接受到pong消息时间大于cluster_node_timeout Redis Cluster在给主节点添加从节点时,不支持slaveof命令,而是通过在从节点上执行命令cluster replicate masterNodeId 。 完整的redis集群架构图如下: Cluster的故障发现也是基于节点通信的。
客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<- 以下是一个包含了最少选项的集群配置文件示例: port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes" > $i/redis.conf done 启动 /redis-trib.rb reshard 127.0.0.1:7000 集群状态 redis-cli -p 7000 cluster nodes | grep master 故障转移 redis-cli -p 7002 debug segfault 查看状态 redis-cli -p 7000 cluster nodes | grep master 增加新的节点 .
Redis Cluster是Redis的分布式解决方案。当遇到内存、并发、流量等瓶颈时,就可以采用Cluster架构达到负载均衡目的。 因为Redis Cluster是Redis3.0版本之后才有的,所以在Redis3.0版本之前,Redis分布式的解决方案一般有两种: 客户端分区方案,优点是分区逻辑可控,缺点是需要自己处理数据路由、高可用 既然Redis已经为我们提供了分布式的解决方案Redis Cluster那么下面我们将详细介绍一下Redis Cluster的功能。 看上图我们知道Redis Cluster采用的是哈希分区方式。所以下面我们重点介绍一下哈希分区的知识。 哈希分区主要有3种下面我们分别介绍一下它们3种的区别。 ---- 上述内容就是Redis Cluster的简单介绍,在下一篇中我们将介绍怎么搭建一个Redis集群。
.60000001a │ ├── log.800000075 │ ├── log.900000001 │ ├── log.900000004 │ ├── log.900000006 │ └── snapshot snapshot.x:快照文件,某个时间段完整的数据。 zookeeper_server.pid:记录ZooKeeper服务进程的PID(进程ID)。ZooKeeper重启脚本就依赖它。 dataDir=/data/zookeeper/snapshot # 快照存储路径 dataLogDir=/data/zookeeper/logs # 事务日志存储路径(与快照分离) 前面提到的日志文件 总结下来一个ZooKeeper的关于日志和快照合理的配置就会包含下面的参数: # 基础配置 dataDir=/data/zookeeper/snapshot # 快照存储路径 dataLogDir=/
redis cluster 3台机器去搭建6个redis实例的redis cluster 安装6台redis(如何安装看前面的文章) 主机 ip 端口(redis-master) 端口(redis-slave yes #重要配置 cluster-config-file nodes-6379.conf #重要配置 cluster-node-timeout 15000 slowlog-log-slower-than yes cluster-config-file nodes-6379.conf cluster-node-timeout 15000 slowlog-log-slower-than 10000 slowlog-max-len yes cluster-config-file nodes-6379.conf cluster-node-timeout 15000 slowlog-log-slower-than 10000 slowlog-max-len MEET messages to join the cluster Waiting for the cluster to join... >>> Performing Cluster Check (using
snapshot_20250902:快照名称(建议用日期命名)。 /es_backup/snapshot_20250902? wait_for_completion=true" {"snapshot":{"snapshot":"snapshot_20250902","uuid":"IcIiVPtmSnW6gYnGohfihw" curl -X PUT "http://192.168.31.172:9200/_snapshot/es_backup/snapshot_20250902? pretty" { "snapshots" : [ { "snapshot" : "snapshot_20250902", "uuid" : "IcIiVPtmSnW6gYnGohfihw
: org.elasticsearch.client.ResponseException: method [DELETE], host [http://localhost:9200], URI [/_snapshot /es_bak_20200220/snapshot-2021-08-16? ", "reason":"[es_bak_20200220:snapshot-2021-08-16/iTsJV_pFQEaN1o2YW2eQfg] cannot delete - another snapshot is currently being deleted" } ], "type":"concurrent_snapshot_execution_exception ", "reason":"[es_bak_20200220:snapshot-2021-08-16/iTsJV_pFQEaN1o2YW2eQfg] cannot delete - another
MySQL备份之 lvm-snapshot lvm-snapshot(工具备份) 优点: •几乎是热备(穿件快照前把表上锁,创建完成后立即释放) •支持所有引擎 •备份速度快 •无需使用昂贵的商业软件( 操作流程 1、flush table with read locak; 2、create snapshot 3、show master status; show slave status; [ 可选] 4、unlock tables; 5、Copy files from the snapshot 6、Unmount the snapshot. 7、Remove snapshot 快照备份: tararg=cvf #定义tar参数,默认为cvf tarfilesuffix=.tar.gz #定义备份文件后缀名格式 datefmt=%Y%m%d_%H%M%S #定义备份文件名时间戳格式 keep_snapshot
在企业中 如果缓存数据不是很多的时候5g左右可以使用 1master+多个slave来提高读了吞吐量 +哨兵来保证高可用 如果缓存数据很多的时候 一般使用redis cluster来搭建集群。。 /用来放redis的日志文件 mkdir -p /var/redis/7001 //redis的持久化文件 修改每个节点的配置文件 port 7001 cluster-enabled yes cluster-config-file /etc/redis-cluster/node-7001.conf cluster-node-timeout 15000 daemonize yes pidfile /var/run/redis_7001 00:00:02 /usr/local/bin/redis-server 192.168.144.4:7002 [cluster] root 62298 1 0 14:18 ? 00:00:03 /usr/local/bin/redis-server 192.168.144.4:7003 [cluster] root 62347 1 0 14:34 ?
(一) lvs-fullnat fullnat模式的性能虽然不如dr模式,但是,fullnat支持多vlan,再rs是不同的vlan的情况下,明显使用fullnat是很好的选择。 fullnat的基本原理:假定用户端的ip是cip,vs上有两个ip,一个是vip,还有lip,lip可以是不同网段的一组ip,rs的ip为rip,当客户请求进来,经过vs的时候,再vs出发生一次snat,将cip转化成lip,再由vs到rs的时候又发生了一次dnat,将vip转化成rip,同样的请求返回时,也经历了两次nat,所以一共经历4次nat,从而达到了可以支持多vlan的情况。 client (cip) ---> vs (vip,lip) ---> rs (rip) <--- <--- 但是在这种情况下,只有一台vs,会导致该vs的负载过大,加入keepalived也只能提高稳定性,并不能解决高吞吐量的问题,因此一般会进行一个lvs集群,keepalived可以对rs进行健康检查,在lvs集群前面加上一个路由器或者交换机,使用ospf协议,用户请求到达路由器(或者交换机)后,通过原地址、端口和目的地址、端口的hash,将链接分配到集群中的某一台LVS上,LVS通过内网向后端转发请求,后端再将数据返回给用户,整个会话完成。rs之间的session表要定期同步,以防止其中一个rs出现问题而造成session丢失的情况。 fullnat模式要重新编译内核,下面是步骤: 一 编译内核: 1 从官网上下载rpm源码包,并用rpmbuild重新编译为二进制包 kernel-2.6.32-220.23.1.el6.src.rpm Lvs-fullnat-synproxy.tar.gz 网址:kb.linuxvirtualserver.org 1 rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm ###安装rpm包### 2 cd rpmbuild/ ###安装完后会在当前目录下 3 yum install -y rpm-build 4 cd /root/rpmbuild/SPECS/ 5 rpmbuild -bp kernel.spec ###解开源码打补丁### ************************************************************************** 6 yum install redhat-rpm-config patchutils xmlto asciidoc binutils-devel newt-devel python-devel perl-ExtUtils-Embed hmaccalc ###依赖性### ************************************************************************** 7 yum install asciidoc-8.4.5-4.1.el6.noarch.rpm newt-devel-0.52.11-3.el6.x86_64.rpm slang-devel-2.2.1-1.el6.x86_64.rpm cd rpmbuild/SPECS/ ************************************************************************** 8 rpmbuild -bp kernel.spec ###解决完依赖性后再次解开源码打补丁### 9 tar zxf Lvs-fullnat-synproxy.tar.gz 10 cd lvs-fullnat-synproxy/ 11 cp lvs-2.6.32-220.23.1.el6.patch ~/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/ 12 cd ~/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/ 13 patch -p1 < lvs-2.6.32-220.23.1.el6.patch ###打补丁### 14 vim Makefile 内容: EXTRAVERSION = -220.23.1.el6 ###扩展版本,你所编译的版本### 15 make 16 make modules_install ###安装模块 17 make i